package day240529;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class Test3 {
    // map 多次递归中都共用，故设为类变量
    static Map<String, Integer> map = new HashMap<>();

    public static void main(String[] args) {
        File rootDir = new File("src");
        File[] files = rootDir.listFiles();
        countingFileType(files);
        //遍历输出 map
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("类型：" + entry.getKey() + " 数量：" + entry.getValue());
        }
    }

    private static void countingFileType(File[] files) {
        for (File file : files) {
            if (file.isDirectory()) {
                // 递归
                countingFileType(file.listFiles());
            } else {
                // 递归出口
                String extension = getFileExtension(file.getName());
                // getOrDefault 方法，返回 key 对应的 value 值，若没有，则返回设定的初始值
                map.put(extension, map.getOrDefault(extension,0) + 1);
            }
        }
    }

    public static String getFileExtension(String fileName) {
        int i = fileName.lastIndexOf(".");
        if (i == -1) {
            return "无后缀";
        }
        return fileName.substring(i + 1);
    }

}
